package com.yuzhi.master.conBjMx.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yuzhi.common.annotation.DictFormat;
import com.yuzhi.common.annotation.ExcelDictFormat;
import com.yuzhi.common.convert.ExcelDictConvert;
import com.yuzhi.master.sewage.rmstSz.entity.request.LocalDateTimeSerializer;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

import java.io.Serializable;

/**
 * 报警异常明细表视图对象 con_bj_mx
 *
 * @author auto code generator
 * @date 2025-07-17
 */
@Data
@ExcelIgnoreUnannotated
public class ConBjMxVo implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    /**
     * 外键ID
     */
    @ExcelProperty(value = "外键ID")
    private String fKey;

    /**
     * 外键类型（1：污水厂，2：泵站,3：水质监测站,4：液位监测站，5：排口视频，6：流量，7：雨量）
     */
    @ExcelProperty(value = "外键类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=：污水厂，2：泵站,3：水质监测站,4：液位监测站，5：排口视频，6：流量，7：雨量")
    private Integer fKeyType;

    /**
     * 参数ID
     */
    @ExcelProperty(value = "参数ID")
    private Integer bjCsId;

    /**
     * 参数名称
     */
    @ExcelProperty(value = "参数名称")
    private String bjCsName;

    @ExcelProperty(value = "参数阈值")
    private String csYz;

    @ExcelProperty(value = "采集值（报警值）")
    private String cjValue;

    @ExcelProperty(value = "超标详细描述")
    private String cbDesc;

    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @ExcelProperty(value = "报警异常时间")
    private LocalDateTime cbTime;

    @ExcelProperty(value = "是否处理状态(0：待受理，1：需处理，2：处理中，3：已处理，4：无需处理)")
    @DictFormat(defaultValue = "is_cl")
    private String isCl;

    @ExcelProperty(value = "报警设备位置")
    private String dLg;

    /**
     * 报警类型（1离线报警/2液位异常/3水质检测报警/4流量超标）
     */
    private String bjType;

    /**
     * 报警设备名称
     */
    private String fKeyName;

    /**
     * 报警规则主键ID
     */
    private String alarmRuleId;

    /** 是否转工单（true=转移，false=不转移） */
    private Boolean transferWork;

    /**
     * 报警结束时间
     */
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    private LocalDateTime cbEndTime;



}
